package com.example.mails;
/**
 * 用于发送HTML格式电子邮件的类
 */

import com.example.utils.BasicUtils;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

public class HtmlMail {
    /**
     * 发送HTML格式邮件
     *
     * @param title    邮件主题
     * @param content  邮件内容
     * @param sender   发件人邮箱
     * @param password 发件人邮箱密码
     * @param toEmail  收件人邮箱数组
     * @param csEmail  抄送人邮箱数组
     */
    public static void sendHtmlEmail(String title, String content, String sender, String password, String[] toEmail,
                                     String[] csEmail) {
        // 创建邮件对象
        HtmlEmail email = new HtmlEmail();
        // 设置SMTP服务器
        email.setHostName("smtp.yeah.net");
        // 设置SMTP端口，通常是465或587
        // email.setSmtpPort(465);
        // 如果需要SSL连接，则设置为true
        // email.setSSLOnConnect(true);
        // 设置发件人邮箱和密码
        email.setAuthentication(sender, password);
        email.setCharset("UTF-8");
        // 设置发送源邮箱
        try {
            email.setFrom(sender);
            // 检查收件人邮箱地址数组是否为空，如果不为空则设置收件人，如果为空则抛出异常
            if (BasicUtils.isEmptys(toEmail) != false) {
                email.addTo(toEmail);
                try {
                    throw new Exception("请设置收件人邮箱地址");
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            // 检查抄送人邮箱地址数组是否为空，如果不为空则设置抄送人，如果为空则抛出异常
            if (BasicUtils.isEmptys(csEmail) != false) {
                email.addCc(toEmail);
                try {
                    throw new Exception("请设置抄送人邮箱地址");
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            // 设置邮件主题
            email.setSubject(title);
            // 设置HTML邮件内容
            // email.setHtmlMsg("<html><body><h1>你好！</h1><p>这是一封<strong>HTML格式</strong>的邮件。</p></body></html>");
            email.setHtmlMsg(content);
            // 设置备用消息，如果接收者的邮箱不支持HTML邮件
            email.setTextMsg("如果您的邮箱不支持HTML邮件，请联系我们。");
            // 发送邮件
            email.send();
            System.out.println("邮件发送成功！");
        } catch (EmailException e) {
            e.printStackTrace();
            System.out.println("邮件发送失败！");
        }
    }
}


